package cn.lyjuan.archetypes.bms.web.util;

import javax.servlet.http.HttpSession;

/**
 * 在 Session 中保存和获取数据
 * 2017-10-2 by chad
 * todo 后期可在此处封闭缓存处理
 */
public class SessionUtils
{
    /**
     * 从session获取指定key的值
     * @param key
     * @param c         如果session中的值不为c类，则返回null
     * @param <T>
     * @return
     *                  null如果session中没有key的值，或者key的值不为c类
     *                  T如果key为值，且为c类
     */
    public static <T> T get(String key, Class<T> c)
    {
        HttpSession session = AppUtils.req().getSession();
        Object o = session.getAttribute(key);
        if (null == o)
            return null;
        if (!c.isInstance(o))
            return null;
        return (T) o;
    }

    /**
     * 获取 session 中的 key
     * @param key
     * @param o
     */
    public static void set(String key, Object o)
    {
        if (null == o)
            return;
        HttpSession session = AppUtils.req().getSession();
        session.setAttribute(key, o);
    }

    /**
     * 移除 session 中的key
     * @param key
     */
    public static void invliad(String key)
    {
        AppUtils.req().getSession().removeAttribute(key);
    }
}
